In a communication system, error control techniques are used to protect a signal against impairment during transmission over a channel. As part of such error control techniques, a codeword is produced for every information block. In order to match an over-the-air transmission rate, the codeword is resized via a rate matching algorithm before being sent over the physical channel. The rate matching algorithm provides a desired number of bits to be sent over the channel where puncturing or repetition of the codeword may be applied. The rate matching algorithm is important in that it can significantly impact the system performance and implementation efficiency.
If the system uses forward error correction (FEC) only, then only one transmission is needed for a given information block, and the rate matching algorithm only provides one version of the codeword. If the system uses Hybrid Automatic Repeat reQuest (HARQ) operation, then multiple transmissions may be needed for a given information block, and the rate matching algorithm may be required to provide different versions of the codeword, for example, for incremental redundancy (IR) HARQ. HARQ degenerates to FEC if only one transmission is used for an information block.
One way to perform the rate matching function is to define puncturing/repetition patterns for every information block size and code rate the system may encounter. However, this method is inflexible. Moreover, it becomes impractical if the system involves a large number of information block size and code rate combinations, such as in a 3rd Generation Partnership Project (3GPP) communication system.
Another way to perform rate matching is to define a rule that steps through the codeword bits one by one and determines if a codeword bit should be punctured (removed) or repeated. Such a method has the benefit of flexibility and is defined in 3GPP Rel-99. However such a method suffers from implementation inefficiency. Further, there is no way to guarantee that the transmissions associated with a given information block do not overlap (i.e., orthogonal) for IR HARQ. Thus the system performance may suffer.
Alternatively, a circular buffer based rate matching algorithm may be designed to provide good performance with low implementation complexity. In this method, the codeword bits are rearranged to form a circular buffer. If Ndesired coded bits are needed for transmission, a length-Ndesired block of consecutive useful bits (skipping dummy or filler bits, for example) are taken from the circular buffer (wrapped around to the beginning if last bit of the circular buffer is reached). Therefore, puncturing and repetition can be achieved using a single method. The circular-buffer technique has advantages in flexibility, performance, and ease of implementation. A key in designing a circular buffer based rate matching algorithm is to generate puncturing patterns to puncture the output of the turbo coder, while ensuring good performance at the desired code rate (or rates) of operation. Therefore, a need exists for a method and apparatus for circular buffer based rate matching within a communication system that ensures good performance at desired code rates.